.include "record-def.s"
.include "linux.s"

# 目的：从文件描述符读取一条记录
#
# 输入：文件描述符及缓冲区
#
# 输出：本函数将数据写入缓冲区并返回状态码。

# 栈局部变量
.equ ST_READ_BUFFER, 16
.equ ST_FILEDES, 24

.section .text
.globl read_record
.type read_record, @function
read_record:
    push    %rbp
    mov     %rsp, %rbp

    push    %rbx
    mov     ST_FILEDES(%rbp), %rbx
    mov     ST_READ_BUFFER(%rbp), %rcx
    mov     $RECORD_SIZE, %rdx
    mov     $SYS_READ, %rax
    int     $LINUX_SYSCALL
# 注意 - %rax中含返回值，我们将该值传回调用程序
    pop     %rbx

    mov     %rbp, %rsp
    pop     %rbp
    ret
